-- $Id: Hitch_Follow.lua 95 2010-02-20 03:30:46Z dark.ryder $

-- Copyright (c) 2009, Ben Blank
--
-- All rights reserved.
--
-- Redistribution and use in source and binary forms, with or without
-- modification, are permitted provided that the following conditions
-- are met:
--
-- * Redistributions of source code must retain the above copyright
--   notice, this list of conditions and the following disclaimer.
--
-- * Redistributions in binary form must reproduce the above copyright
--   notice, this list of conditions and the following disclaimer in the
--   documentation and/or other materials provided with the distribution.
--
-- * Neither the name of 535 Design nor the names of its contributors
--   may be used to endorse or promote products derived from this
--   software without specific prior written permission.
--
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-- A PARTICULAR PURPOSE ARE DISCLAIMED.	IN NO EVENT SHALL THE COPYRIGHT
-- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

local LibStub = LibStub
local Hitch = LibStub("AceAddon-3.0"):GetAddon("Hitch")
local Hitch_Follow = Hitch:NewModule("Follow")
local L = LibStub("AceLocale-3.0"):GetLocale("Hitch_Follow")

function Hitch_Follow:OnEnable()
	self:RegisterEvent("AUTOFOLLOW_BEGIN", "OnFollowStart")
	self:RegisterEvent("AUTOFOLLOW_END", "OnFollowStop")
end

function Hitch_Follow:OnFollowStart(event, who)
	-- hack; GetName returns nil for non-teammates
	self.following = Hitch:GetName(who)
end

function Hitch_Follow:OnFollowStop()
	if self.following then
		self:SendName(self.following, "OnLostFollower", Hitch:GetName("player"))
	end

	self.following = nil
end

function Hitch_Follow:OnInitialize()
	self.following = nil
end

function Hitch_Follow:OnLostFollower(follower)
	RaidWarningFrame_OnEvent(RaidWarningFrame, "CHAT_MSG_RAID_WARNING", L["MSG_FOLLOW_BROKE"](follower))
end
